#include <iostream>
#include <vector>
using namespace std;

int n,post[35],in[35];
struct Node{
    int data;
    struct Node *l,*r;
    Node(int d):data(d),l(NULL),r(NULL){}
};

Node *create(int l1,int r1,int l2,int r2){
    if(l1>r1)    return NULL;
    Node *root = new Node(post[r1]);
    int index = l2;
    while(in[index]!=post[r1])    index++;
    root->l = create(l1,l1+index-1-l2,l2,index-1);
    root->r = create(l1+index-l2,r1-1,index+1,r2);
    return root;
}

signed main()
{
    cin>>n;
    for(int i=0;i<n;i++)    cin>>post[i];
    for(int i=0;i<n;i++)    cin>>in[i];
    Node *root = create(0,n-1,0,n-1);
    vector<Node*> v,t;
    int flag = 0;
    v.push_back(root);
    while(!v.empty()){
        t.clear();
        for(int i=0;i<v.size();i++){
            if(flag)    cout<<" ";
            cout<<v[i]->data;
            flag = 1;
            if(v[i]->l)    t.push_back(v[i]->l);
            if(v[i]->r)    t.push_back(v[i]->r);
        }
        v = t;
    }
    return 0;
}
